水無瀬の部屋 > Programming > sample > dumptext > mainbox.cpp |
---|
1: //*********************************************************
2: // プロジェクト: dumptext
3: // ファイル名: mainbox.cpp
4: //*********************************************************
5: #include "mainbox.h"
6: #include "res.h"
7: #include <dlg/browsbox/browsbox.h>
8:
9:
10: //---------------------------------------------------------
11: // マクロ の 定義
12: //---------------------------------------------------------
13: #define PROP_DIALOGPARAM "PROP_DIALOGPARAM"
14:
15:
16: //---------------------------------------------------------
17: // ファイルスコープ関数 の 宣言
18: //---------------------------------------------------------
19: static INT_PTR CALLBACK MainBoxProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam );
20:
21:
22: //*********************************************************
23: // MainBox
24: //*********************************************************
25: bool
26: MainBox
27: (
28: DUMPTEXT_t *dt
29: )
30: {
31: // パラメタの仮定
32: ASSERT( IsValidPtr( dt, sizeof( *dt ) ) );
33: ASSERT( IsValidLocalPathString( dt->datafile ) );
34: ASSERT( IsValidLocalPathString( dt->dumpfile ) );
35:
36: HINSTANCE hInstance = GetModuleHandle( null );
37: return IDOK == DialogBoxPtrParam
38: (
39: hInstance,
40: MAKEINTRESOURCE( MAIN_BOX ),
41: HWND_DESKTOP,
42: MainBoxProc,
43: dt
44: );
45: }//MainBox
46:
47:
48: //******************************************************************************************************************
49: //
50: //******************************************************************************************************************
51: static INT_PTR OnMainDestroy( HWND hWnd );
52: static INT_PTR OnMainHitTest( HWND hWnd, WPARAM wParam, LPARAM lParam );
53: static INT_PTR OnMainInitDialog( HWND hWnd, LPARAM lParam );
54: static INT_PTR OnMainCommand( HWND hWnd, WPARAM wParam, LPARAM lParam );
55:
56:
57: //*********************************************************
58: // MainBoxProc
59: //*********************************************************
60: static
61: INT_PTR
62: CALLBACK
63: MainBoxProc
64: (
65: HWND hWnd,
66: UINT uMsg,
67: WPARAM wParam,
68: LPARAM lParam
69: )
70: {
71: // パラメタの仮定
72: ASSERT( IsValidWindow( hWnd ) );
73:
74: switch( uMsg )
75: {
76: case WM_DESTROY: return OnMainDestroy( hWnd );
77: case WM_NCHITTEST: return OnMainHitTest( hWnd, wParam, lParam );
78: case WM_INITDIALOG: return OnMainInitDialog( hWnd, lParam );
79: case WM_COMMAND: return OnMainCommand( hWnd, wParam, lParam );
80: default: return false;
81: }
82: }//MainBoxProc
83:
84: //*********************************************************
85: // OnMainDestroy
86: //*********************************************************
87: static
88: INT_PTR
89: OnMainDestroy
90: (
91: HWND hWnd
92: )
93: {
94: // パラメタの仮定
95: ASSERT( IsValidWindow( hWnd ) );
96:
97: VERIFY( RemoveProp( hWnd, PROP_DIALOGPARAM ) );
98:
99: return true;
100: }//OnMainDestroy
101:
102: //*********************************************************
103: // OnMainInitDialog
104: //*********************************************************
105: static
106: INT_PTR
107: OnMainInitDialog
108: (
109: HWND hWnd,
110: LPARAM lParam
111: )
112: {
113: // パラメタの仮定
114: ASSERT( IsValidWindow( hWnd ) );
115: ASSERT( IsValidPtr( (DUMPTEXT_t *)lParam, sizeof(DUMPTEXT_t) ) );
116:
117: //
118: DUMPTEXT_t *dt = reinterpret_cast<DUMPTEXT_t *>( lParam );
119: VERIFY( SetProp( hWnd, PROP_DIALOGPARAM, dt ) );
120: VERIFY( WindowMoveToCursorPos( hWnd ) );
121:
122: //
123: {
124: HWND hEditInputFile = GetDlgItem( hWnd, IDC_INPUTFILE );
125: Edit_LimitText( hEditInputFile, MAX_PATH );
126: SetWindowText( hEditInputFile, dt->datafile );
127: }
128:
129: //
130: {
131: HWND hEditOutputFile = GetDlgItem( hWnd, IDC_OUTPUTFILE );
132: Edit_LimitText( hEditOutputFile, MAX_PATH );
133: SetWindowText( hEditOutputFile, dt->dumpfile );
134: }
135:
136: //
137: {
138: HWND hEditStartAddress = GetDlgItem( hWnd, IDC_STARTADDR );
139: HWND hSpinStartAddress = GetDlgItem( hWnd, IDC_SPINSTARTADDR );
140: Spin_SetBuddy( hSpinStartAddress, hEditStartAddress );
141: Spin_SetRange( hSpinStartAddress, 0, UD_MAXVAL );
142: Spin_SetPos( hSpinStartAddress, dt->start );
143: SetDlgItemInt( hWnd, IDC_STARTADDR, dt->start, false );
144: }
145:
146: //
147: {
148: HWND hEditStopAddress = GetDlgItem( hWnd, IDC_STOPADDR );
149: HWND hSpinStopAddress = GetDlgItem( hWnd, IDC_SPINSTOPADDR );
150: Spin_SetBuddy( hSpinStopAddress, hEditStopAddress );
151: Spin_SetRange( hSpinStopAddress, 0, UD_MAXVAL );
152: Spin_SetPos( hSpinStopAddress, dt->stop );
153: SetDlgItemInt( hWnd, IDC_STOPADDR, dt->stop, false );
154: }
155:
156: return true;
157: }//OnMainInitDialog
158:
159: //*********************************************************
160: // OnMainHitTest
161: //*********************************************************
162: static INT_PTR OnMainHitTest( HWND hWnd, WPARAM wParam, LPARAM lParam )
163: {
164: // パラメタの仮定
165: ASSERT( IsValidWindow( hWnd ) );
166:
167: // ウィンドウのクライアント領域を掴んで移動
168: const LRESULT lResult = DefWindowProc( hWnd, WM_NCHITTEST, wParam, lParam );
169: SetWindowLongPtr64( hWnd, DWL_MSGRESULT, (HTCLIENT == lResult) ? HTCAPTION : lResult );
170:
171: return true;
172: }//OnMainHitTest
173:
174:
175: //******************************************************************************************************************
176: //
177: //******************************************************************************************************************
178: static INT_PTR OnMainCommandOK( HWND hWnd );
179: static INT_PTR OnMainCommandCancel( HWND hWnd );
180: static INT_PTR OnMainCommandBrowseInputFile( HWND hWnd );
181: static INT_PTR OnMainCommandBrowseOutputFile( HWND hWnd );
182:
183:
184: //*********************************************************
185: // OnMainCommand
186: //*********************************************************
187: static
188: INT_PTR
189: OnMainCommand
190: (
191: HWND hWnd,
192: WPARAM wParam,
193: LPARAM
194: )
195: {
196: // パラメタの仮定
197: ASSERT( IsValidWindow( hWnd ) );
198:
199: switch( LOWORD(wParam) )
200: {
201: case IDOK: return OnMainCommandOK( hWnd );
202: case IDCANCEL: return OnMainCommandCancel( hWnd );
203: case IDC_BROWSEINPUT: return OnMainCommandBrowseInputFile( hWnd );
204: case IDC_BROWSEOUTPUT: return OnMainCommandBrowseOutputFile( hWnd );
205: default: return false;
206: }
207: }//OnMainCommand
208:
209: //*********************************************************
210: // OnMainCommandOK
211: //*********************************************************
212: static
213: INT_PTR
214: OnMainCommandOK
215: (
216: HWND hWnd
217: )
218: {
219: // パラメタの仮定
220: ASSERT( IsValidWindow( hWnd ) );
221:
222: // 取得
223: DUMPTEXT_t *dt = (DUMPTEXT_t *)GetProp( hWnd, PROP_DIALOGPARAM );
224: GetDlgItemText( hWnd, IDC_INPUTFILE, dt->datafile, numof(dt->datafile) );
225: GetDlgItemText( hWnd, IDC_OUTPUTFILE, dt->dumpfile, numof(dt->dumpfile) );
226: dt->start = GetDlgItemInt( hWnd, IDC_STARTADDR, null, false );
227: dt->stop = GetDlgItemInt( hWnd, IDC_STOPADDR, null, false );
228: dt->start = max(0, dt->start);
229:
230: //
231: if ( ('\0' != dt->datafile[0]) && IsValidLocalPathString( dt->datafile )
232: && ('\0' != dt->dumpfile[0]) && IsValidLocalPathString( dt->dumpfile ) )
233: {
234: VERIFY( EndDialog( hWnd, IDOK ) );
235: }
236:
237: return true;
238: }//OnMainCommandOK
239:
240: //*********************************************************
241: // OnMainCommandCancel
242: //*********************************************************
243: static
244: INT_PTR
245: OnMainCommandCancel
246: (
247: HWND hWnd
248: )
249: {
250: // パラメタの仮定
251: ASSERT( IsValidWindow( hWnd ) );
252:
253: VERIFY( EndDialog( hWnd, IDCANCEL ) );
254:
255: return true;
256: }//OnMainCommandCancel
257:
258: //*********************************************************
259: // OnMainCommandBrowseInputFile
260: //*********************************************************
261: static
262: INT_PTR
263: OnMainCommandBrowseInputFile
264: (
265: HWND hWnd
266: )
267: {
268: // パラメタの仮定
269: ASSERT( IsValidWindow( hWnd ) );
270:
271: //
272: char path[ MAX_PATH_BUF ];
273: HWND hEditInputFile = GetDlgItem( hWnd, IDC_INPUTFILE );
274: GetWindowText( hEditInputFile, path, numof(path) );
275:
276: //
277: char buffer[ MAX_PATH_BUF ];
278: if ( SaveFileBox(
279: hWnd,
280: OFN_HIDEREADONLY,
281: buffer,
282: numof(buffer),
283: path,
284: "入力ファイルの選択",
285: "すべてのファイル\0*.*\0" ) )
286: {
287: SetWindowText( hEditInputFile, buffer );
288: }
289:
290: return true;
291: }//OnMainCommandBrowseInputFile
292:
293: //*********************************************************
294: // OnMainCommandBrowseOutputFile
295: //*********************************************************
296: static
297: INT_PTR
298: OnMainCommandBrowseOutputFile
299: (
300: HWND hWnd
301: )
302: {
303: // パラメタの仮定
304: ASSERT( IsValidWindow( hWnd ) );
305:
306: //
307: char path[ MAX_PATH_BUF ];
308: HWND hEditOutputFile = GetDlgItem( hWnd, IDC_OUTPUTFILE );
309: GetWindowText( hEditOutputFile, path, numof(path) );
310:
311: //
312: char buffer[ MAX_PATH_BUF ];
313: if ( SaveFileBox(
314: hWnd,
315: OFN_HIDEREADONLY,
316: buffer,
317: numof(buffer),
318: path,
319: "出力ファイル名の選択",
320: "すべてのファイル\0*.*\0" ) )
321: {
322: SetWindowText( hEditOutputFile, buffer );
323: }
324:
325: return true;
326: }//OnMainCommandBrowseOutputFile
327:
328:
329: //** end **
330:
331:
参照:
水無瀬の部屋 > sample > dumptext > mainbox.cpp |
---|
このページは cpp2web が出力しました。
水無瀬 優 postmaster@katsura-kotonoha.sakura.ne.jp
http://katsura-kotonoha.sakura.ne.jp/prog/code/dumptext/mainbox_cpp.shtml